
module F = Format

type results = { total : int
               ; correct : int
               ; incorrect : string list
               ; errors : string list
               }

let pp_list : string list -> unit =
  fun l -> 
    begin 
      F.open_hbox()
      ; F.print_string " ["
      ; List.iter (fun n -> (F.print_string n; F.print_string ",")) (List.rev l)
      ; F.print_string "]"
      ; F.close_box()
    end

let pp : results -> unit = 
  fun r -> 
    begin 
      F.open_vbox 0

      ; F.print_string "Total     : "
      ; F.print_int r.total
      ; F.print_cut()

      ; F.print_string "Correct   : "
      ; F.print_int r.correct
      ; F.print_cut()

      ; F.print_string "Incorrect : "
      ; F.print_int (List.length r.incorrect)
      ; pp_list r.incorrect
      ; F.print_cut()

      ; F.print_string "Errors    : "
      ; F.print_int (List.length r.errors)
      ; pp_list r.errors
      ; F.print_cut()

      ; F.close_box()
    end      

